<?php

include_once("library/facil3/navigation/http/HttpResult.class.php");

//include_once("library/forum/modules/contact/dao/ContactDAO.class.php");
//include_once("library/forum/modules/contact/vo/ContactVO.class.php");

include_once("facil3/core/controller/interface/HTTPControllerInterface.class.php");
include_once(DataHandler::removeDobleBars(Config::getFolderView("HttpJogoResult.class.php")));

include_once "library/facil3/core/controller/mail/MailInfoPostVO.php" ;
//para retorno do envio e cadasro de mail
include_once "library/facil3/core/vo/ReturnResultVO.class.php";
include_once("library/jogando/modules/jogo/dao/JogoDAO.class.php");
include_once("library/facil3/core/modules/category/dao/CategoryDAO.class.php");

/**
 * @author Renato
 * @date		: 13/02/2012
 * @version		: 1.0
 * @desc		: Jogos por estilo, deve listar as categorias para o usuario escolher e filtrar
 */
 
class Jogo implements HTTPControllerInterface  {
	//configurações e dados a serem a serem enviados no email
	public $MailInfoPost;
	
	public $arrayVariable;
	public $arrayRestFolder;
	
	public function __construct($arrayRestFolder = NULL){
		if($arrayRestFolder != NULL){
			$this->arrayVariable   = Navigation::getVariableArraySlug($arrayRestFolder);
            $this->arrayRestFolder = $arrayRestFolder;
        }
	}
	public function importImages(){
		exit();
		set_time_limit(0);
		$JogoDAO = JogoDAO::getInstance();
		$ReturnRestulJogo = $JogoDAO->select(
								$typeOfReturn = JogoDAO::RETURN_STD_OBJECT, 
								$id = NULL, 
								$active = 1, 
								NULL,
								$name = NULL, 
								$ranking = NULL
							);
		DataHandler::createFolderIfNotExist("upload/jogo/");
		
		foreach($ReturnRestulJogo->result as $jogo){
			if(!file_exists("upload/jogo/$jogo->id/")){
				DataHandler::createFolderIfNotExist("upload/jogo/$jogo->id/");
				echo Debug::li($jogo->img_url);
				$array 		= explode("/", $jogo->img_url);
				$file		= $array[count($array)-1];
				$fileBytes 	= file_get_contents($jogo->img_url);
				
				DataHandler::writeFile("upload/jogo/$jogo->id/", $file, $fileBytes, "w+");
				$JogoDAO->update(
								$jogo->id, 
								$active = NULL,
							  	$category_id = NULL,
								$name = NULL,
							  	$content = NULL,
							  	$img_url = "http://www.jogandoeandando.com.br/upload/jogo/$jogo->id/$file",
							  	$ranking = NULL
	  						);
			}//end if pasta existe - se a pasta já existir ele nem tenta de novo
		}
		echo Debug::li("DONE");
			exit();
		
	}
	/**
	 * Retorna a lista de categorias com 3 jogos randomicos no parametro ->jogos
	 * 
	 */
	public function init(){
		$id = DataHandler::forceInt(DataHandler::getValueByArrayIndex($this->arrayVariable, "id"));
		if($id > 0){
			$JogoVO = new JogoVO();
			$Retult = $JogoVO->setId($id, TRUE);
			if($Retult->success){
				//tem o jogo
			} else {
				//jogo não encontrado
			}
		} else {
			//o viado nem enviou o id
			Navigation::redirect("");
		}
		$returnResult = new HttpResult();
		//iniciando o resultado para o html
		$jogo = $JogoVO->toStdClass();
		$retornoDaPaginaHTML = new HttpJogoResult($jogo);
		$RandomResult = $this->getRandomJogos(10);
		$retornoDaPaginaHTML->array_random = $RandomResult->result;
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		//Debug::print_r($returnResult);
		return $returnResult;
	}
	private function getRandomJogos($quant, $category_id = NULL){
		$JogoDAO = JogoDAO::getInstance();
		$ReturnRestulJogo = $JogoDAO->select(
								$typeOfReturn = JogoDAO::RETURN_STD_OBJECT, 
								$id = NULL, 
								$active = 1, 
								$category_id,
								$name = NULL, 
								$ranking = NULL, 
								$order_type = JogoDAO::ORDER_RAND,						
								$quant_limit = $quant, 
								$quant_started = 1
							);
		return $ReturnRestulJogo;
	}
    /**
     * exibe os estilos e link para os jogos filtrados
     */
    public function show($categoria_id = NULL){
		//inicia a array final da categoria pai
    	$StdCategoryVO 			= array();
    	$JogoDAO = JogoDAO::getInstance();
    	$page = DataHandler::forceInt(DataHandler::getValueByArrayIndex($this->arrayVariable, "pag"));
    	$page = ($page >= 0)?$page:0;
    	$ResultDAO = $JogoDAO->select(JogoDAO::RETURN_STD_OBJECT, NULL, 1, 
								$category_id = $categoria_id,
								$name = NULL, 
								$order_type = NULL);
		$lista_ordenada = array_slice($ResultDAO->result, $page, $quant = 30);
		foreach($lista_ordenada as $jogo){
			$jogo->content =  str_replace("&quot;", "\"", $jogo->content);
		}
    	//Debug::print_r($ResultDAO);
    	$array_random = array();
    	$total = $ResultDAO->count_total-1;
    	while (count($array_random)<10){
    		$randGame = $ResultDAO->result[rand(0, $total)];
    		if(!in_array($randGame, $array_random) && in_array($randGame, $lista_ordenada)){
    			$randGame->content =  str_replace("&quot;", "\"", $randGame->content);
    			$array_random[] = $randGame;
    		}
    	}
    	
    	
    	//Debug::print_r($ResultDAO);
    	//exit();
		//iniciando o retorno padrao em http result
		$returnResult = new HttpResult();
		//iniciando o resultado para o html
		$retornoDaPaginaHTML = new HttpRoot();
		$retornoDaPaginaHTML->array_random = $array_random;
		$retornoDaPaginaHTML->lista_ordenada = $lista_ordenada;
		
		$retornoDaPaginaHTML->count_total 	= $ResultDAO->count_total;
		$retornoDaPaginaHTML->total_pages 	= floor($ResultDAO->count_total/30)+1;
		$retornoDaPaginaHTML->this_page 	= $page;
		
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		//Debug::print_r($returnResult);
		return $returnResult;
    }
    
    /**
     * filtra pelo id de estilo enviado
     */
    public function estilo(){
    	$id = DataHandler::forceInt(DataHandler::getValueByArrayIndex($this->arrayVariable, "id"));
		if($id > 0){
			$Retorno = $this->show($id);
			$Content = $Retorno->getHttpContentResult();
			//pegando o nome do estilo pelo id
			$CategoryVO = new CategoryVO();
			$CategoryVO->setId($id, TRUE);
			
			$Content->estilo = $CategoryVO->getName();
			
			return $Retorno;
		} else {
			//sem id enviado
			Navigation::redirect("estilos/jogos_por_categorias/");
		}
    }
}